本文主要是了解視窗事件被觸發的相關時機
程式碼:form_event.py
"""
程式名稱:form_event.py
程式功能:
1. 視窗本身相關事件了解
"""
import sys
from PySide6.QtGui import QFocusEvent
from PySide6.QtWidgets import (
QWidget, QApplication)
class MyApp(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('form_event.py')
self.setGeometry(400, 250, 500, 300)
self.show()
def changeEvent(self, event):
print('changeEvent')
def closeEvent(self, event):
print('closeEvent')
def hideEvent(self, event):
print('hideEvent')
def moveEvent(self, event):
print('moveEvent')
def resizeEvent(self, event):
print('resizeEvent')
def showEvent(self, event):
print('showEvent')
if __name__ == '__main__':
app = QApplication()
my_app = MyApp()
sys.exit(app.exec())
底下為console輸出訊息:
視窗啟動時:
changeEvent
moveEvent
resizeEvent
showEvent
paintEvent
paintEvent
changeEvent
paintEvent
視窗縮小至工作列時:
changeEvent
hideEvent
changeEvent
視窗被其它視窗蓋住/當其它視窗移開:
(此視窗要為作用中視窗,如果用滑鼠移動其它視窗去遮蓋、移開,因動作視窗是在滑鼠所按住的視窗,故不會觸發事件)
changeEvent
paintEvent
視窗重新顯示時:
showEvent
changeEvent
changeEvent
paintEvent
視窗移動時:
一直觸發moveEvent
視窗調整大小時:
changeEvent
paintEvent
resizeEvent
paintEvent ....
resizeEvent ....
當視窗關閉時:
changeEvent
closeEvent
changeEvent
hideEvent
事件被觸發的時機
函式名稱 | 何時觸發 |
---|---|
changeEvent | 視窗啟動 |
視窗縮小至工作列 | |
視窗被其它視窗蓋住當其它視窗移開 | |
視窗重新顯示 | |
視窗調整大小時 | |
視窗關閉時 | |
closeEvent | 視窗關閉 |
hideEvent | 視窗縮小至工作列 |
視窗關閉 | |
moveEvent | 視窗啟動 |
視窗移動 | |
paintEvent | 視窗啟動 |
視窗被其它視窗蓋住/當其它視窗移開 | |
視窗重新顯示 | |
resizeEvent | 視窗啟動 |
視窗被其它視窗蓋住/當其它視窗移開 | |
視窗調整大小 | |
showEvent | 視窗啟動 |
視窗重新顯示 |
有時一個操作動作當中,事件不只被觸發一次,如changeEvent在很多操作當中就被觸發多次。有些是連續觸發,如滑鼠移動視窗就會一直觸發moveEvent。